package com.enn.demo.core.domain.repository;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.enn.demo.core.domain.model.role.Role;
import com.enn.demo.core.domain.model.role.RoleCode;
import com.enn.demo.core.domain.model.role.RoleId;
import com.enn.demo.core.domain.model.role.RoleName;
import com.enn.demo.dal.entity.SysRoleDO;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 角色-Repository接口
 *
 * @author haoxin
 * @date 2021-02-14
 **/
public interface RoleRepository {

    /**
     * 获取角色
     *
     * @param roleId
     * @return
     */
    Role find(RoleId roleId);

    /**
     * 获取角色
     *
     * @param roleName
     * @return
     */
    Role find(RoleName roleName);

    /**
     * 获取角色
     *
     * @param roleCode
     * @return
     */
    Role find(RoleCode roleCode);

    /**
     * 保存
     *
     * @param role
     */
    RoleId store(Role role);

    /**
     * 删除
     *
     * @param roleIds
     */
    void remove(List<RoleId> roleIds);

    /**
     * 查询分页
     * @param params
     * @return
     */
    IPage<SysRoleDO> queryPage(Map<String, Object> params);

    /**
     * 多查询
     * @param param
     * @return
     */
    List<SysRoleDO> queryList(Map<String, Object> param);
}
